package com.boot.modules.core.service;

import com.boot.common.result.Result;
import com.boot.system.entity.SysModule;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.row.Row;
import com.mybatisflex.core.service.IService;

import java.util.List;
import java.util.Map;

/**
 * 核心服务
 */
public interface CoreService extends IService<Row> {

    /**
     * 分页查询
     * @param sysModule 模块信息
     * @param queryParam 查询条件
     * @return 列表
     */
    Page<Map<String, Object>> getCorePage(SysModule sysModule, Map<String, Object> queryParam);

    /**
     * 获取列表
     * @param sysModule 模块信息
     * @param queryParam 查询条件
     * @return 列表
     */
    List<Map<String, Object>> getCoreList(SysModule sysModule, Map<String, Object> queryParam);

    /**
     * 新增数据
     * @param sysModule 模块信息
     * @param dataParam 表单数据
     * @return 状态
     */
    Result<?> addCore(SysModule sysModule, Map<String, Object> dataParam);

    /**
     * 修改数据
     * @param sysModule 模块信息
     * @param dataParam 表单数据
     * @return 状态
     */
    Result<?> updateCore(SysModule sysModule, Map<String, Object> dataParam);

    /**
     * 删除数据
     * @param sysModule 模块信息
     * @param ids 多个以英文逗号(,)分割
     * @return 状态
     */
    boolean deleteCore(SysModule sysModule, String ids);

    /**
     * 获取列表（缓存）
     * @param sysModule 模块信息
     * @return 列表
     */
    List<Map<String, Object>> getCacheList(SysModule sysModule);

    /**
     * 获取（缓存）
     * @param sysModule 模块信息
     * @param id ID
     * @return 值
     */
    Map<String, Object> getCache(SysModule sysModule, Long id);

    /**
     * 设置（缓存）
     * @param sysModule 模块信息
     * @param id ID
     */
    void setCache(SysModule sysModule, Long id);

    /**
     * 删除（缓存）
     * @param sysModule 模块信息
     * @param ids ID集合
     */
    void deleteCache(SysModule sysModule, List<Long> ids);

}
